using System;
using System.Collections.Generic;
using System.Text;
using EntidadesTO;
using LogicaNegocio;

namespace Controladoras
{
    public class UsuarioMantenedor
    {
        private static UsuarioMantenedor instancia;
        private List<UsuarioTO> listaUsuario;
        private UsuarioBL usuarioBL;

        public static UsuarioMantenedor ObtenerInstancia()
        {
            if (instancia == null)
            {
                instancia = new UsuarioMantenedor(); 
            }
            return instancia;
        }

        //Constructor de la clase
        private UsuarioMantenedor()
        {
            listaUsuario = new List<UsuarioTO>();
            usuarioBL = new UsuarioBL();
        }
        
        public void CargarLista(UsuarioTO pUsuarioTO)
        {
            listaUsuario = usuarioBL.Validar(pUsuarioTO);
        }

        public UsuarioTO ObtenerUsuario(UsuarioTO pUsuarioTO)
        {
            return usuarioBL.Listar(pUsuarioTO)[0];
        }

        public Boolean ValidarUsuario(ref UsuarioTO pUsuarioTO)
        {
            Boolean bResultado = false;
            pUsuarioTO.Contrasena = usuarioBL.generarClaveSHA1(pUsuarioTO.Contrasena);
            CargarLista(pUsuarioTO);
            if (ListaUsuario.Count > 0)
            {
                pUsuarioTO.NombreUsuario = ListaUsuario[0].NombreUsuario;
                pUsuarioTO.Contrasena = ListaUsuario[0].Contrasena;
                pUsuarioTO.Observaciones = ListaUsuario[0].Observaciones;
                pUsuarioTO.CodUsuario = ListaUsuario[0].CodUsuario;
                pUsuarioTO.CodPerfil = ListaUsuario[0].CodPerfil;
                pUsuarioTO.DesPerfil = ListaUsuario[0].DesPerfil;

                bResultado = true;
            }
            return bResultado;

        }


        //Devolver la lista de documentos legales
        public List<UsuarioTO> ListaUsuario
        {
            get
            {
                return this.listaUsuario;
            }
        }
    }
}
